package com.sugon.dao;

import com.sugon.entity.ModulPositionCorrelationEntity;
import com.sugon.entity.ModuleReplacePartEntity;
import com.sugon.modules.analyse.model.dto.MoldReplacePartFeeItemDTO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 模具-备件更换记录Dao
 *
 * @author sugon
 * @date 2019-08-01 16:07:32
 */
public interface ModuleReplacePartDao extends BaseDao<ModuleReplacePartEntity> {

    /**
     * 统计模具某个位置未完成的换件记录数
     * 未完成指的是满足以下任意一个条件
     * 1、未审核通过
     * 2、数据未同步过
     *
     * @param modulePositionId 模具位置ID
     * @return
     */
    int countUnPassedReplaceRecordNum(@Param("modulePositionId") String modulePositionId);

    @Select("SELECT * FROM module_replace_part WHERE TYPE_METHOD = ${typeMethod} AND replace_code = #{replaceCode} AND module_position_id = #{modulePositionId}")
    List<ModuleReplacePartEntity> query(@Param("typeMethod") Integer typeMethod, @Param("replaceCode") String replaceCode, @Param("modulePositionId") String modulePositionId);

    /**
     * 进行模具维修换件费用统计
     * 只统计已换件且审批通过的
     *
     * @param yearly     年度
     * @param moldIdList 模具ID列表
     * @return
     */
    List<MoldReplacePartFeeItemDTO> doMoldRepairFeeStat(@Param("yearly") String yearly, @Param("moldIdList") List<String> moldIdList);

    /**
     * 查询指定换件单下的换件记录
     * 默认获取未关联型芯的记录
     *
     * @param typeMethod  维修还是维护
     * @param replaceCode 维修单号还是维护单号
     * @return
     */
    List<ModulPositionCorrelationEntity> queryModulePosition(@Param("typeMethod") Integer typeMethod, @Param("replaceCode") String replaceCode);

    /**
     * 更新进度
     *
     * @param replaceCode 换件工单或者维护工单编码
     * @param progress    换件进度
     * @return
     */
    @Update("UPDATE module_replace_part SET progress = ${progress} WHERE replace_code = #{replaceCode}")
    int updateProgress(@Param("replaceCode") String replaceCode, @Param("progress") Integer progress);

}
